#ifndef CHARACTERDATA_H_
#define CHARACTERDATA_H_

#include "DndData.h"
#include "Power.h"
#include "Trait.h"
#include "Feat.h"
#include "TitledData.h"

#include <vector>

class CharacterRecord;

class CharacterData : public TitledData
{
public:
    CharacterData(const QString &title = QString());
    CharacterData(const CharacterData &);
    virtual ~CharacterData();
    void saveToXml() const;
    void loadFromXml();
    QString description() const;
    CharacterData &operator=(const CharacterData &);
    QString className() const;
    QString race() const;
    void setClassName(const QString &);
    void setRace(const QString &);
    void fill(CharacterRecord *);

    int mAbilities[DndData::NUM_ABILITIES];
    DndData::ClassName mClassName;
    QString mExtClassName;
    DndData::RaceName mRace;
    QString mExtRaceName;
    QList<Power> mPowers;
    QList<Trait> mTraits;
    QList<Feat> mFeats;
    QString mDetails;              // general description, habits etc
    QString mArmour;
    QString mShield;
    QString mMeleeWeaponOne;
    QString mMeleeWeaponTwo;
    QString mRangedWeapon;
    QStringList mEquipment;
};

#endif /*CHARACTERDATA_H_*/
